// 引入本地保存工具
import { setToken, removeToken, getToken } from '@/utils/auth.js'
// 引入登录请求
import { loginApi, uesrMsgApi, personalMsgApi } from '@/api'

export default {
  namespaced: true,
  state: {
    token: getToken(),
    userMsg: {}
  },
  mutations: {
    setToken(state, parame) { // 设置token
      state.token = parame // 向state中保存
      setToken(parame)
    },
    removeToken(state) { // 删除token
      state.token = null // 删除state中的token
      removeToken() // 删除本地的token
    },
    setUserMsg(state, parame) {
      state.userMsg = parame
    }, // 保存用户信息
    removeUserMsg(state) {
      state.userMsg = {}
    } // 删除用户信息
  },
  actions: {
    async getToken(context, parame) { // 发送登录页的请求
      const res = await loginApi(parame)
      context.commit('setToken', res.data) // 将请求回来的信息保存到vuex中和本地cookie中
    },
    async getUserMsg(context) { // 发起用户基本信息请求
      const res = await uesrMsgApi()
      // 需要用到用户的id来发起请求头像等数据的请求
      const id = res.data.userId // 用户id
      const photoRes = await personalMsgApi(id) // 根据用户id发起请求
      console.log(res)
      // 保存数据
      context.commit('setUserMsg', { ...res.data, ...photoRes.data })
      return res.data.roles.menus // 将请求回来的数据返回出去(用于权限筛选)
    }
  }
}
